package com.rc.evcharger.task;//package com.rc.stdevcharger.task;
//
//import com.rc.evcharger.common.base.BaseTask;
//import com.rc.evcharger.common.constant.SocketConstant;
//import com.rc.evcharger.common.utils.DataUtil;
//import com.rc.evcharger.model.order.OrderInfo;
//import com.rc.stdevcharger.client.ChargerClientRouter;
//import com.rc.stdevcharger.service.CommandService;
//import com.rc.evcharger.service.order.OrderInfoService;
//import com.rc.evcharger.redis.RedOrderService;
//import com.rc.evcharger.common.utils.TimeoutUtil;
//import com.rc.evcharger.vo.charge.StopChargeReq;
//import io.netty.util.Timeout;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//
//import java.util.concurrent.TimeUnit;
//
//
///**
// * 电流过低结算定时器
// */
//@Component
//public class ElecLowTask extends SupperTask implements BaseTask {
//    private final Logger logger = LoggerFactory.getLogger(this.getClass());
//
//    public final int TASKSLEPPE_MINUTES = 3;
//
//    @Autowired
//    private CommandService commandDubboService;
//
//    @Autowired
//    private RedOrderService redOrderService;
//
//    @Autowired
//    private OrderInfoService orderService;
//
//    @Autowired
//    private ChargerClientRouter chargerClientRouter;
//
//
//    @Override
//    public void runTask(Timeout timeout) throws Exception {
//        TimeoutUtil timeoutUtil = TimeoutUtil.newInstance();
//        String key = timeoutUtil.getRtua(timeout);
////        logger.warn("电流过低结算定时器开始执行: 执行的key为：" + key);
//        if (key == null) {
//            return;
//        }
//        //key = cc\messcat\task\ElecLowTask19 00 14 01 01 001520099452500001200
//        key = key.replace(this.getClass().getName(), "");
//        //String rtua = key.substring(0, 11);
//        //String gunNum = key.substring(12, 14);
//        //String orderNum = key.substring(15);
//
//        int index = key.lastIndexOf(" ");
//        String orderNum = key.substring(index + 1);
//
//        OrderInfo order = orderService.selectByOrderNum(orderNum);
//        if (order == null) {
//            logger.error("发送电流过低停止指令出错，该订单号不存在:{}", orderNum);
//            return;
//        }
//        StopChargeReq stopChargeRequest = new StopChargeReq();
//        stopChargeRequest.setOrderId(order.getOrderId());
//        stopChargeRequest.setOrderNum(order.getOrderNum());
//        stopChargeRequest.setStopType(SocketConstant.STOP_ELEC_LOW_0x7);
//        stopChargeRequest.setElecPileId(order.getElecPileId());
//
//        /**发送充满自动停止指令**/
//        //commandDubboService.query_stop_charge(stopChargeRequest);
//        //远程调用停止指令
//        chargerClientRouter.query_stop_charge(stopChargeRequest);
//
//        logger.info("电流过低结算定时器: 执行的rtua为:{},订单号:{}", key);
//
//
//    }
//
//    //rtua = 19 00 14 01 01 001520099452500001200
//    @Override
//    public void removeTask(String rtua) {
//        rtua = orderStopReason(rtua, SocketConstant.CON0 + "");
//
//        TimeoutUtil timeoutUtil = TimeoutUtil.newInstance();
//        Timeout timeout = timeoutUtil.getTimeout(this.getClass().getName() + rtua);
//        if (timeout != null) {
//            timeout.cancel();
//            timeoutUtil.removeTimeout(this.getClass().getName() + rtua);
//            logger.warn("电流过低结算定时器被删除" + this.getClass().getName() + rtua);
//        }
//    }
//
//    @Override
//    public void addTask(String rtua, String gunNum, String orderNum, Integer time, TimeUnit tu) {
//        TimeUnit timeUnit = TimeUnit.MINUTES;
//        if (tu != null) {
//            timeUnit = tu;
//        }
//        if (time == null) {
//            time = this.MINUTE;
//        }
//        //从redis里根据
//        if (redOrderService.hasOrder(rtua, gunNum, null)) {
//
//            TimeoutUtil timeoutUtil = TimeoutUtil.newInstance();
//            Timeout timeout = timer.newTimeout(this, time, timeUnit);
//
//            String key = DataUtil.getKey(rtua, gunNum, orderNum);
//            timeoutUtil.addTimeout(this.getClass().getName() + key, timeout);
//
//            logger.warn("添加电流过低结算定时器key" + this.getClass().getName() + key);
//        }
//    }
//
//    public boolean hasTask(String rtua, String gunNum, String orderNum) {
//        TimeoutUtil timeoutUtil = TimeoutUtil.newInstance();
//
//        String key = DataUtil.getKey(rtua, gunNum, orderNum);
//        Timeout timeout = timeoutUtil.getTimeout(this.getClass().getName() + key);
//        if (timeout != null) {
//            return true;
//        }
//        return false;
//    }
//}
